Ext.ns('AmPlanView');

AmPlanView = Ext.extend(Ext.Panel, {
	// 条件搜索Panel
	searchPanel : null,
	// 数据展示Panel
	gridPanel : null,
	// GridPanel的数据Store
	store : null,
	// 头部工具栏
	topbar : null,
	// 构造函数
	constructor : function(_cfg) {
		Ext.applyIf(this, _cfg);
		// 初始化组件
		this.initUIComponents();
		// 调用父类构造
		AmPlanView.superclass.constructor.call(this, {
					id : 'AmPlanView',
					title : '电表计划',
					iconCls : 'menu-myplan',
					region : 'center',
					layout : 'border',
					items : [this.searchPanel, this.gridPanel]
				});
	},// end of constructor

	// 初始化组件
	initUIComponents : function() {
		var isAddGranted  = isGranted('AM_ADDPLAN');
		var isExecGranted = isGranted('AM_ADDPLAN');
		
		// 初始化搜索条件Panel
		this.searchPanel = new Ext.FormPanel({
					id : 'AmPlanSearchForm',
					height : 80,
					region : 'north',
					title : '查询条件',
					frame : false,
					border : false,
					layout : 'column',
					labelWidth : 70,
					labelAlign : 'right',
					defaults : {
						style : 'padding:15px 0px 15px',
						border : false,
						columnWidth : 0.3,
						layout : 'form'
					},
					items : [{
								items : [{
											fieldLabel : '计划名称',
											xtype : 'textfield',
											name : 'Q_planName_S_LK'
										}]
							}, {
								columnWidth : 0.25,
								items : [{
									width : 100,
									fieldLabel : '状态',
									hiddenName : 'Q_planStatus_L_EQ',
									xtype : 'combo',
									mode : 'local',
									editable : false,
									triggerAction : 'all',
									store : [['', '全部'], ['0', '休眠中'],
											['1', '执行中']],
									value : ''
								}]
							}, {
								columnWidth : 0.15,
								items : [{
									style : 'padding-left:15px;',
									xtype : 'button',
									text : '查询',
									iconCls : 'search',
									handler : function() {
										var searchPanel = Ext.getCmp('AmPlanSearchForm');
										var gridPanel = Ext.getCmp('AmPlanGrid');
										if (searchPanel.getForm().isValid()) {
											$search({
														searchPanel : searchPanel,
														gridPanel : gridPanel
													});
										}
									}
								}]
							}]
				});// end of the searchPanel

		this.store = new Ext.data.JsonStore({
					url : __ctxPath+ '/pdaweb/listAmPlan.do',
					root : 'result',
					totalProperty : 'totalCounts',
					id : 'id',
					fields : ['planId', 'planName', 'executor',
							'accountDay', 'lastEditDt',
							'meterCount', 'planStatus'],
					remoteSort : true
				});
		
		this.store.load({
					params : {
						start : 0,
						limit : 15
					}
				});
		var cm = new Ext.grid.ColumnModel({
			columns : [new Ext.grid.RowNumberer(), {
						header : '计划名称',
						dataIndex : 'planName'
					}, {
						header : '表数',
						dataIndex : 'meterCount'
					}, {
						header : '月结日',
						dataIndex : 'accountDay'
					}, {
						header : '最后编辑日期',
						dataIndex : 'lastEditDt'
					}, {
						header : '状态',
						dataIndex : 'planStatus',
						renderer : function(v) {
							return (v == "1"? "<span style='color:#0f0;'>执行中</span>": "休眠中");
						}
					}, {
						header : '操作',
						dataIndex : 'planId',
						width : 50,
						sortable : false,
						renderer : function(value, metadata, record, rowIndex,
								colIndex) {
							var planId = record.data.planId;
							var accountDay = record.data.accountDay;
                            var planStatus = record.data.planStatus;
                            
							var str = '&nbsp;<button title="明细" value=" " class="btn-showDetail" onclick="AmPlanView.showTask('
									+ planId + ')">&nbsp</button>';
							if (isAddGranted && record.data.planStatus != '1') {
								str += '&nbsp;<button title="编辑" value=" " class="btn-edit" onclick="AmPlanView.edit('
									+ planId + ')">&nbsp</button>';
							}
							if (isExecGranted && record.data.planStatus == '0') {
								str += '&nbsp;<button title="执行" value=" " class="btn-transition" onclick="AmPlanView.executeShow('
									+ planId + ','+planStatus+','+accountDay+')">&nbsp</button>';
							}
							return str;
					   }
					}],
			defaults : {
				sortable : true,
				menuDisabled : false
			}
		});// end of the cm


		this.gridPanel = new Ext.grid.GridPanel({
					id : 'AmPlanGrid',
					region : 'center',
					store : this.store,
					trackMouseOver : true,
					disableSelection : false,
					loadMask : true,
					autoHeight : true,
					cm : cm,
					viewConfig : {
						forceFit : true,
						enableRowBody : false,
						showPreview : false
					},
					bbar : new Ext.PagingToolbar({
								pageSize : 15,
								store : this.store,
								displayInfo : true,
								displayMsg : '当前显示从{0}至{1}， 共{2}条记录',
								emptyMsg : "当前没有记录"
							})
				});
		if(isAddGranted){
			this.gridPanel.add(new Ext.Toolbar({
							id : 'AmPlanFootBar',
							height : 30,
							bodyStyle : 'text-align:left',
							items : [new Ext.Button({
										iconCls : 'btn-add',
										text : '添加',
										handler : function() {
											new AmPlanForm().show();
										}
									})]
						}));
		}
		
	}// end of the initUIComponents
});
/**
 * 执行计划界面
 */
AmPlanView.executeShow = function(planId,planStatus,accountDay) {
	var minDate = new Date().clearTime(); 
	if(accountDay < minDate.getDate()){
		minDate = minDate.add(Date.MONTH,1).getFirstDateOfMonth();//first date of next month
	}
	new Ext.Window({
		id : 'ExecutePlanWindow',
		title : '执行计划',
		height : 200,
		width : 300,
		items : [{
			xtype : 'form',
			frame : true,
            plain : true,
			border : false,
			id : 'AmExecutePlanFormPanel',
			items : [{
				xtype : 'panel',
                layout : 'form',
                style : 'padding-left:14px',
				items : {
					xtype : 'combo',
					width : 100,
					hiddenName:'username',
					id : 'AmPlan.executor',
					fieldLabel : '抄 表 人',
					valueField : 'username',
					displayField : 'fullname',
					mode : 'local',
					editable : false,
					allowBlank : false,
					triggerAction : 'all',
					store : new Ext.data.SimpleStore({
								url : __ctxPath
										+ '/pdaweb/showExecutorNameAmPlan.do',
								autoLoad : true,
								remoteSort : true,
								fields : ['username', 'fullname']
							}),
					listeners : {
						scope : this,
						select : function(cbo, record, index) {
							Ext.getCmp('AmPlan.executor').setValue(cbo
								.getValue());
						}
					}
				}
			}, {
				xtype : 'fieldset',
				title : '抄表时段',
				items : {
					layout : 'form',
					frame : true,
					border : false,
					items : [{
						id : 'beginTime',
						fieldLabel : '开始时间',
						xtype : 'datefield',
						format : 'Y-m-d',
                        allowBlank : false,
						minValue : new Date().clearTime(),
						listeners : {
							'change' : function() {
								Ext.getCmp('endTime').setMinValue(this.getValue());
							}
						}
					}, {
						id : 'endTime',
						fieldLabel : '结束时间',
						xtype : 'datefield',
						format : 'Y-m-d',
                        allowBlank : false,
						minValue : new Date(),
						listeners : {
							'select' : function() {
                                if(accountDay>this.getValue().getDate()){
                                    Ext.getCmp('beginTime').setMaxValue(this.getValue());
                                }else{
                                    this.setValue("");
                                    Ext.Msg.alert('操作提示','结束日期不应大于月结日！');
                                }
							}
						}
					}]
				}
			}]
		}],
		buttons : [{
					text : '执行',
					iconCls : 'btn-save',
					scope : this,
					handler : function() {
						AmPlanView.execute(planId);
					}
				}, {
					text : '取消',
					iconCls : 'btn-cancel',
					scope : this,
					handler : function() {
						Ext.getCmp("ExecutePlanWindow").close();
					}
				}]
	}).show();
}
/**
 * 执行计划方法
 */
AmPlanView.execute = function(planId) {
	var fp = Ext.getCmp("AmExecutePlanFormPanel");
	if(fp.getForm().isValid()){
        fp.getForm().submit({
                url : __ctxPath + '/pdaweb/executeAmPlan.do',
                params : {
                    planId : planId,
                    username : Ext.getCmp("AmPlan.executor").getValue(),
                    status : 1
                },
                waitMsg : '正在提交数据...',
                success : function(fp, action) {
                    Ext.ux.Toast.msg('操作信息', '执行成功！');
                    Ext.getCmp("ExecutePlanWindow").close();
                    Ext.getCmp('AmPlanGrid').getStore().reload();
                },
                failure : function(fp, action) {
                    Ext.ux.Toast.msg('操作信息', '执行失败！');
                    Ext.getCmp('ExecutePlanWindow').close();
                }
            });
    }
}
/**
 * 编辑计划
 */
AmPlanView.edit = function(id) {
	new AmPlanForm({
				planId : id
			}).show();
}
/**
 * 显示详情
 */
AmPlanView.showTask = function(id) {
	new AmPlanTaskView({
				planId : id
			}).show();
}
